package com.dragon.mmochat.model.enumType;

import java.util.ArrayList;
import java.util.List;

import com.dragon.mmochat.util.MmochatUtil;

//角色.怪物.宠物等的种类; 不同种类的动画不同
//注：一旦发版,如果此enum会存到数据库，则此类型只能增加,不能减少或修改名字
//算上后缀，名字最长为8个汉字,96像素，所以名字最多4个汉字
public enum MmochatRoleType implements MmochatCommonObjectType {
	// 野怪
	树精(2, 6), 树妖(3, 5), 野兽(4, 11), 野人(5, 12), 妖兽(6, 18), 血妖(7, 17), 巨人(8, 1000), 巨兽(
			9, 23), 蚌精(10, 42), 海妖(11, 41), 强盗(12, 31), 山贼(13, 30), 女妖(14, 36), 沼泽蜥蜴(
			15, 1000), 尸妖(16, 48), 骷髅(17, 1000), 马贼(18, 54), 囚牛(19, 55), 和尚(20,
			61), 螭吻(21, 62), 鬼怪(22, 66), 鬼徒(23, 65), 兵痞子(24, 71), 狴犴(25, 72), 虾兵(
			26, 77), 狻猊(27, 78), 丘八(28, 90), 饕餮(29, 91), 灵兽(30, 95), 复仇仙女(31,
			96), 阴魂(32, 84), 轩辕残魂(33, 85), 媚狐(34, 102), 人狐(35, 101), 海龙(36, 108), 海兽(
			37, 107), 琼华弟子(38, 114), 琼华护教(39, 113), 琼华长老(40, 120), 琼华护法(41, 119), 士兵(
			42, 24), 沼泽兽(43, 35), 骨喽兽(44, 47), 食人草(45, 1), 钟馗(46, 125), 牛头怪(47,
			126),

	// 主角人物
	阐教男(100, 1000), 阐教女(101, 1000), 人教男(102, 1000), 人教女(103, 1000), 截教男(104,
			1000), 截教女(105, 1000),

	// 官宠
	高力玄武(200, 1000), 通灵玄武(201, 1000), 铁血玄武(202, 1000), 幻影玄武(203, 1000),

	// 变异
	小龙人(300, 1000), 白娘子(301, 1000),

	// 纪念兽
	龙三太子(350, 1000);

	int value;
	int monsterLevel;// 野怪等级，非野怪则写1000

	MmochatRoleType(int value, int monsterLevel) {
		this.value = value;
		this.monsterLevel = monsterLevel;
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}

	public int getMonsterLevel() {
		return monsterLevel;
	}

	public static MmochatRoleType get(int value) {
		for (MmochatRoleType type : MmochatRoleType.values()) {
			if (value == type.getValue()) {
				return type;
			}
		}
		return null;
	}

	public static MmochatRoleType getRandomMonsterType(int myLevel) {
		try {
			int startLevel = myLevel / 10 * 10;
			int endLevel = startLevel + 9;
			List<MmochatRoleType> list = new ArrayList<MmochatRoleType>();
			for (MmochatRoleType type : MmochatRoleType.values()) {
				if (type.getMonsterLevel() < 30
						|| (type.getMonsterLevel() >= startLevel && type
								.getMonsterLevel() <= endLevel)) {
					list.add(type);
				}
			}
			int count = list.size();
			if (count == 0) {
				return MmochatRoleType.食人草;
			}
			int index = MmochatUtil.getRandomValue(count);
			return list.get(index);
		} catch (Exception e) {
			return MmochatRoleType.食人草;
		}
	}

}
